home *** CD-ROM | disk | FTP | other *** search
- Path: bloom-beacon.mit.edu!hookup!swrinde!cs.utexas.edu!howland.reston.ans.net!wupost!waikato!comp.vuw.ac.nz!kauri.vuw.ac.nz!gnat
- From: gnat@kauri.vuw.ac.nz (Nathan Torkington)
- Newsgroups: rec.arts.int-fiction,news.answers,rec.answers
- Subject: Adventure Authoring Systems FAQ
- Supersedes: <authoring-systems-faq_765115203@kauri.vuw.ac.nz>
- Followup-To: rec.arts.int-fiction
- Date: 14 Apr 1994 12:00:11 GMT
- Organization: Dept. of Comp. Sci., Victoria Uni. of Wellington, New Zealand.
- Lines: 435
- Approved: news-answers-request@MIT.edu
- Distribution: world
- Message-ID: <authoring-systems-faq_766324803@kauri.vuw.ac.nz>
- Reply-To: Nathan.Torkington@vuw.ac.nz
- NNTP-Posting-Host: kauri.vuw.ac.nz
- Originator: gnat@kauri.vuw.ac.nz
- Xref: bloom-beacon.mit.edu rec.arts.int-fiction:2911 news.answers:18050 rec.answers:4896
-
- Archive-name: games/adventure-systems
- Maintained-by: Nathan.Torkington@vuw.ac.nz <Nathan Torkington>
- Last-changed: Fri Oct 15 13:05:27 NDT 1993
-
- ----------------------------------------
- Changes:
- * ANSI C ADVSYS
- ----------------------------------------
-
- This is a list of systems that can be used to author adventure games.
- Information about TADS, ADVSYS, ADL, OASYS, INFORM and ALAN can be
- found here.
-
- Where possible, pointers to existing information (such as books,
- magazine articles, and ftp sites) are included here, rather than
- rehashing that information again.
-
- If you haven't already done so, now is as good a time as any to read
- the guide to Net etiquette which is posted to news.announce.newusers
- regularly. You should be familiar with acronyms like FAQ, FTP and
- IMHO, as well as know about smileys, followups and when to reply by
- email to postings.
-
- For more information on interactive fiction in general, pointers to
- books and dissertations, and this group's focus, see David Graves'
- "Frequently Asked Questions (FAQ)" posting, which appears periodically
- in rec.arts.int-fiction.
-
- This FAQ is currently posted to rec.arts.int-fiction and news.answers.
- All posts to news.answers are archived, and will then possible to
- retrieve the last posted copy via anonymous FTP from
- rtfm.mit.edu
- as
- /pub/usenet/news.answers/games/adventure-systems
- Those without FTP access should send e-mail to
- mail-server@rtfm.mit.edu
- with
- "send usenet/news.answers/finding-sources"
- in the body to find out how to get archived news.answers posts by
- e-mail.
-
- This FAQ was mostly written by Nathan Torkington, with numerous
- contributions by readers of rec.arts.int-fiction. Credits appear at
- the end. Comments and indications of doubt are enclosed in []s in the
- text. Each section begins with forty dashes ("-") on a line of their
- own, then the section number. This should make searching for a
- specific section easy.
-
- If you suffer loss in any way, shape or form from the use of
- information in this file, then Nathan Torkington expressly disclaims
- responsibility for it. It's your own damn fool fault if you go broke,
- detonate your computer or eat broccoli as a result of anything you
- read here.
-
- As a final note, this FAQ should be regarded as volatile. If this
- version is more than two months old, you should consider acquiring a
- new version. See the instructions above for details of how to do
- this.
-
- Contributions, comments and changes should be directed to
- Nathan.Torkington@vuw.ac.nz
-
- ----------------------------------------
- List of Answers
-
- 1 What to look for in a system
- 2 Writing your own adventure
- 3 TADS
- 4 ALAN
- 5 ADVSYS
- 6 ADL
- 7 OASYS
- 8 INFORM
- 9 Interactive-Fiction FTP Site
- Z Credits
-
- ----------------------------------------
- 1 What to look for in a system
-
- --> Sample adventures, written using the system. This will make
- learning how to program the system easy. It will also show you the
- workarounds for any clumsiness in the language.
-
- --> The ability to handle non-player characters. This means that
- players should be capable of being addressed, eg "amy, take the cat"
- should be a valid command to type. Players should be capable of
- having turns in the background (to allow movement, thieving, etc).
-
- --> The ability to handle events that occur independent of players
- actions (often called fuses and daemons). Fuses are scheduled events,
- such has having the bomb detonate three turns after the fuse is lit.
- Daemons are routines that are called once every move.
-
- --> Documentation. You need, at least, a reference page. Sample
- code helps, and a full explanation of the order that routines are
- called by the game kernel (eg ADL calls the following for each direct
- object: the actor's action, the verb's preaction, the indirect
- object's action, the direct object's action, then finally the verb
- action. If any one of these procedures returns a true value, then
- that procedure is assumed to have completed the command handling for
- that direct object, and processing continues for the next direct
- object. After all the direct objects are handled this way, the room's
- action is called and the kernel continues).
-
- --> Distribution mechanism. Is the game code fully yours to use? Do
- you have to pay a fee for commercial distribution? For shareware
- distribution? For free distribution? Are you obligated to offer the
- source code to the game interpreter as well as your compiled
- adventure?
-
- --> Is it object oriented? If so, you will probably have an easier
- time of writing your adventure -- text adventure worlds lend
- themselves to object orientation better than some other forms of
- simulation. Of course, learning the subtleties of the OO method might
- be harder than writing your game using a traditional (non-OO) system.
-
- --> Is the game language functional or procedural? That is, does the
- language look like LISP (lots of parentheses) or a kind of cross
- between BASIC and C (curly braces {} are a dead giveaway for C
- lookalikes). You might have to learn a whole new programming style if
- you write your adventure in a language style that you are unfamiliar
- with.
-
- ----------------------------------------
- 2 Writing your own adventure
-
- Dave Librik posted Dave's Quick Guide To Getting Started with TADS,
- which was so good that I've generalised it to cover most adventure
- systems.
-
- Above all else, the key to learning how to write adventures is to
- start writing one. Practice not only makes perfect, but
- trial-and-error makes passable too. You will need the following:
-
- --> a language/kernel reference manual for your adventure system.
- You might have to register your system to get this.
- --> printouts of sample adventures. Staple each printout, so the
- printouts won't get lost or confused. Also print out any
- standard libraries that the system comes with (eg adv.t in TADS
- or standard.adl in ADL).
-
- Now:
- --> familiarise yourself with the basics of the language. Subtleties
- (syntax details, daemons, fuses) should be left for later -- just
- the basic ideas of objects, inheritance (if your language is OO),
- printing text. It might help if you already knew a language in
- the same style (procedural or functional) as the language you
- will have to program in.
- --> read the sample adventures. Get a feel for how items and rooms
- are defined. This step is fairly important -- you will write
- most of your adventures by strategically stealing the way someone
- else has written theirs (software professionals call this "code
- reuse" -- we call it laziness).
- --> make a copy of one of the simpler sample adventures. Take out
- all the stuff specific to that adventure (rooms, players,
- objects, etc) and just leave the verbs, the initialisation code,
- and the definition of the player's character. Now start writing
- your own adventure. Start simple -- a couple of rooms and some
- objects to take.
- --> add more complicated things. For ideas of things to add, it
- helps to have played some adventures. Try adding code for doors,
- containers, other actors, new verbs, fancy verbs that need
- indirect objects. Use the sample adventures that came with the
- system as a reference for using things.
- --> if the sample adventure you modified included standard code for
- players or startup (std.t in TADS), then include those libraries
- and customise them to your taste (you should have no trouble
- reading and understanding the code by now). Add any of your own
- initialisation code to this.
- --> when you want to start making significant changes to the
- behaviour of the adventure, you will have to change any standard
- libraries that your adventures includes (standard.adl in ADL,
- adv.t in TADS). Whenever you make a change, comment at the top
- of the file why you make the change, and exactly what you
- changed. This is so that when your later adventures need any of
- the features you have added, it will be easy to add them. It
- also helps when newer releases of the adventure system arrive --
- you can make the changes to the new standard library with minimal
- hassle.
- --> now realise that what you have written is a practice game. It
- probably wasn't well laid out, or well planned, or even
- consistent. To write your Real Adventure, you will have to go
- through some serious Design and Implementation.
-
- The classic Colossal Cave adventure has been rewritten in TADS by Dave
- Baggett <dmb@ai.mit.edu> and is available in source from the IF
- archive (see Section 9) in the directory
- if-archive/games/others/ccr.tar.Z
-
- ----------------------------------------
- 3 TADS
-
- TADS stands for "Text Adventure Development System". It is available
- for MSDOS, Atari ST, Macintosh, Sun, SGI, Linux, DEC/MIPS, and NeXT
- computers at the moment. It is available via anonymous FTP as
- msdos.archive.umich.edu:msdos/games/adventure/tads.zip
- mac.archive.umich.edu:mac/game/gameutil/tads2.1.cpt.hqx
- atari.archive.umich.edu:atari/Games/Tads/tads.lzh
- ftp.gmd.de:if-archive/programming/tads/
- but these are not the latest versions (at the time of writing). The
- latest version, TADS 2.1, features virtual memory, expanded C-like
- syntax, improved documentation and an improved debugger.
-
- TADS is released by High Energy Software, and is shareware. Shareware
- games can (and have) been written using TADS, and commercial
- distribution of games written using TADS seems allowable. TADS
- consists of a compiler (which converts the source code to adventures
- into TADS game code) and an interpreter (which reads the TADS game
- code produced by the compiler and lets users play the game).
-
- Registered users get a form of the interpreter which can be combined
- with the game code file to form a single executable for distribution.
- The interpreter is licensed for shareware use, you don't have to pay a
- penny if you distribute your games via shareware. If you plan to sell
- it commercially, contact Mike Roberts for information on getting the
- rights.
-
- The TADS language is declarative and object-oriented. It appears very
- C-like, and the syntax shouldn't be too difficult to learn by people
- who know C or Pascal. The language provides a basic syntax, some text
- manipulation and support for object-oriented programming. The
- interpreter provides parsing, question-and-response I/O format, and
- activation of the appropriate methods in objects depending on what the
- player types. The language has support for actors, fuses and daemons.
-
- TADS comes with the source to a trivial adventure, and source to an
- Infocom quality game ("Ditch-Day Drifter"). On registration of the
- package, a manual can be obtained. The manual for v1.* is very good
- (although it doesn't explain well the contents of the standard library
- file, adv.t). The v2.1 manual is apparently twice the size of v1.
-
- The prices for versions < 2.0 are:
- TADS shareware fee: 25.00
- Includes printed TADS Author's Manual, the
- current TADS software on specified media,
- plus the source code for "Ditch Day
- Drifter," a complete sample game.
- Deep Space Drifter: 10.00
- Includes "Deep Space Drifter" on the disk
- media specified above, plus a complete map
- of the game and the DSD Hint Book.
- California residents please add 7% sales tax.
-
- The price of v2.1 is US$40 (+ California sales tax for California
- residents, $3 for shipping and handling within the US and Canada, or
- $8 for international air mail). If you register "Deep Space Drifter"
- at the same time, the total is only US$50 (plus sales and shipping).
- For more information, contact:
- --> BBS: 415 493 2420 (set modem to 14400-N-8-1)
- --> CompuServe: 73737,417
- --> GEnie: M.ROBERTS10
- --> Internet: 73737.417@compuserve.com
- --> US Mail: High Energy Software, PO Box 50422, Palo Alto, CA
- 94303.
-
- ----------------------------------------
- 4 ALAN
-
- The Alan System is a special purpose language for creating interactive
- fiction or text adventures. It consists of a compiler which compiles
- Alan source to an intermediate form and an interpreter that interprets
- such an intermediate form.
-
- The Alan language was designed to give the maximum functionality from
- as little code-writing as possible. This means:
- --> the system provides default behaviour for many things (which the
- author can override).
- --> the system directly supports locations, objects, actors and
- other concepts natural to the domain of interactive fiction.
- --> the author can extend the allowable input of the player, and
- connect actions to that input.
-
- It is also a safe language in the sense that extensive compile-time
- checking makes it nearly impossible to produce a game that crashes or
- behaves inconsistently.
-
- The language is declarative and very close to English. It supports
- fuses and daemons by use of events, and is object-inspired (all
- declarations are local to entities, but no inheritance).
-
- The Alan System is request-ware. The complete system is available
- without charge through electronic mail. Send a message with a single
- line:
- SEND INFO
- to
- alan-request@softlab.se
- for more information.
-
- The complete distribution includes the compiler, the documentation, a
- 100+ page manual in plain text and postscript versions, some examples
- and the interpreter with debugging support. The interpreter can be
- redistributed with your games, so this seems to open the way for
- commercial and shareware release.
-
- The manual is available from the IF archive (see Section 9) in the
- directory
- if-archive/programming/alan/manual.zip
-
- The current version of Alan is 2.4 which runs on Sun/UNIX, Amigas, PCs
- (MSDOS and OS/2) and VAX/VMS. A major revision of the manual is
- planned, and a larger game is also being worked on for release.
-
- The authors may be contacted at:
-
- alan-request@softlab.se pseudo-mail-server for deliveries
- thoni@softlab.se
- gorfo@ida.liu.se
-
- ----------------------------------------
- 5 ADVSYS
-
- ADVSYS (ADVenture SYStem) was written by David Betz, and the latest
- version (1.3) is based on the 1986 release of 1.2 which seems more
- prolific. This package consists of LaTeX and ASCII documentation, C
- source code for the compiler and interpreter, and the source code for
- several sample adventures (as well as a demonstration library). It
- was written up in Byte magazine [reference here].
-
- The language is LISP-like, and object-oriented. The game has no
- knowledge of the difference between actors, objects, locations, etc --
- all this must be present in the game code. As such, the runtime
- library is rather more complex than might be desired. Actors, fuses
- and daemons can all be implemented easily.
-
- There is [somewhere] a library of code developed by the (now-defunct)
- ADVSYS mailing list. This provides rather better code than the
- library distributed with ADVSYS, and includes containers and limits to
- containment.
-
- The documentation says "Permission is hereby granted for unrestricted
- non-commercial use". You might have to contact David Betz to ask
- about commercial and shareware distribution.
-
- ADVSYS was posted to comp.sources.games, and appeared in volume 2. It
- can, therefore, be found on any FTP site that archives it. Two such
- FTP sites are:
- ftp.uu.net:/usenet/comp.sources.games/volume2/advsys
- wuarchive.wustl.edu:/usenet/comp.sources.games/volume02/advsys
-
- An ANSI C version is available, on the IF Archive site (see section 9).
-
- ----------------------------------------
- 6 ADL
-
- ADL (Adventure Design Language) was written by Ross Cunniff and Tim
- Brengle. The package posted to comp.sources.games consists of plain
- ASCII documentation, C source for a compiler, interpreter and
- debugger, and several sample adventures (ranging from the complex to
- the very simple) which illustrate the various features of ADL.
-
- ADL is a declarative, semi-object-oriented language. It has the
- concept of methods (procedures that are attached to objects) but not
- inheritance. This means that an object-oriented style of programming
- will be rather inhibited.
-
- The language recognises actors, locations and objects as being
- distinct. Fuses and daemons are supported in the language. A
- standard library comes with the package, that gives a firm foundation
- to write games on.
-
- The documentation is very close to being excellent, and contains a
- full language reference. The documentation doesn't appear to contain
- any guide to distribution of anything but the source code. Therefore
- it may be legal to distribute the compiled interpreter with your game.
- For more information, you should contact the authors at:
-
- USMAIL: Ross Cunniff
- 636 La Grande, #7
- Sunnyvale, CA 94087
-
- ----------------------------------------
- 7 OASYS
-
- OASYS stands for Object-Oriented Adventure System. It was distributed
- in comp.binaries.ibm.pc in 1992, and is available from any FTP site
- which archives cbipc. It was written by Russell Wallace, who is
- reachable via e-mail as RWALLACE@vax1.tcd.ie.
-
- The package has documentation, two sample adventures, C source for the
- compiler and interpreter, and MS-DOS binaries for the compiler and
- interpreter. The source is missing an include file (Russell will
- provide it on request) and shouldn't be very difficult to port to non
- MS-DOS systems.
-
- The language is declarative, and (not really) object-oriented. The
- major limitation of the parser is that it forces the player to type
- the adjectives along with the noun ("ceramic key" must be typed, even
- if there are no other keys accessable). This may be fixed later.
-
- Actor support is provided, and players can issue commands to other
- actors. [fuses? daemons?]
-
- There don't appear to be any legal restrictions, so you can probably
- distributed compiled interpreters with your commercial/shareware/free
- games.
-
- ----------------------------------------
- 8 INFORM
-
- INFORM was written by Graham Nelson at Oxford University, UK. It is a
- compiler that produces Infocom story files. There are many
- public-domain interpreters for these files, available from the
- Interactive Fiction archive site.
-
- The compiler is written in ANSI C, and is freely available (but not
- public domain). It produces version-3 files from a fairly C-like
- source language. The documentation (in the same package as the
- source) contains a description of Inform, as well as a specification
- of the story file form. It also contains some articles on game design
- with relevance to designing in this system.
-
- Two example games are included, one medium-sized and one trivial.
- Both the source files and the story files are included.
-
- ----------------------------------------
- 9 Interactive-Fiction FTP Site
-
- The FTP site ftp.gmd.de:if-archive contains most, if not all,
- of the software mentioned here as well as interpreters for Infocom
- games, source and binaries for many other games and sundry information
- files too numerous to mention.
-
- ftp.gmd.de: is mirrored in wuarchive.wustl.edu:/mirrors/if-archive.
-
- The latest FAQ is stored here as
- if-archive/rec.arts.int-fiction/authoring-systems.FAQ
-
- ----------------------------------------
- Z Credits
-
- Nathan Torkington <Nathan.Torkington@vuw.ac.nz>, David Librik
- <librik@cory.Berkeley.EDU>, Dave Baggett <dmb@case.ai.mit.edu>, Thomas
- Nilsson <thoni@ida.liu.se>, Graham Nelson <nelson@vax.ox.ac.uk>,
- Volker Blasius <blasius@gmd.de> and the documentation for the various
- systems mentioned here.
-